package serializer

import "go-shop-api/pkg/e"

//定义了一个序列化器

// Response 返回格式
type Response struct {
	Status int         `json:"status"` //e.code 状态码
	Msg    string      `json:"msg"`    //e.msg	 状态码对应的状态文
	Tips   string      `json:"tips"`   //弹框提示
	Error  string      `json:"error"`  //错误  开发者观看
	Data   interface{} `json:"data"`   //返回的数据
}

// TokenData 带token的user信息
type TokenData struct {
	User  interface{} `json:"user"`
	Token string      `json:"token"`
}

type DataList struct {
	Total int64       `json:"total"`
	Item  interface{} `json:"list"`
}

// NewResponse 初始化Response
func NewResponse(status int, error, tips string, data interface{}) *Response {
	return &Response{
		Status: status,
		Msg:    e.GetCodeMsg(status),
		Error:  error, //显示给自己看，一些程序错误，挑错
		Tips:   tips,  //显示给前端/用户看
		Data:   data,
	}
}

// BuildListResponse  返回列表数据格式
func BuildListResponse(total int64, item interface{}, error, tips string) *Response {
	return &Response{
		Status: e.Success,
		Msg:    e.GetCodeMsg(e.Success),
		Error:  error, //显示给自己看，一些程序错误，挑错
		Tips:   tips,  //显示给前端/用户看
		Data: DataList{
			Total: total,
			Item:  item,
		},
	}
}
